import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { fileURLToPath, URL } from 'node:url'
import { Plugin as importToCDN } from "vite-plugin-cdn-import"
import modules from './cs.cdn.config.js'

// import viteBasicSslPlugin from '@vitejs/plugin-basic-ssl'
// , viteBasicSslPlugin()
export default defineConfig({
  plugins: [vue(), importToCDN({ modules })],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url)),
      "@Plugin": fileURLToPath(new URL('./plugin', import.meta.url)),
    },
    extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".css", ".json", ".vue"]
  },
  server: {
    host: '0.0.0.0',
    // https: true
  },
  build: {
    chunkSizeWarningLimit: 2048,
    assetsInlineLimit: 2048,
    outDir: './dist',
    rollupOptions: {
      output: {
        // 最小化拆分包
        manualChunks(id) {
          if (id.includes('node_modules')) {
            return id.toString().split('node_modules/')[1].split('.pnpm/')[1].split('/')[0].toString();
          }
        },
        // 用于从入口点创建的块的打包输出格式[name]表示文件名,[hash]表示该文件内容hash值
        entryFileNames: 'js/[name].[hash].js',
        // 用于命名代码拆分时创建的共享块的输出命名
        chunkFileNames: `js/[name].[hash].js`,
        // 用于输出静态资源的命名，[ext]表示文件扩展名
        // 不进行打包,防止出现将外置CSS 文件重复打包问题
        // assetFileNames: '[ext]/[name].[ext]',
      }
    }
  },
})
